package com.kuqi.fragments;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.Toast;
import androidx.fragment.app.Fragment;
import com.bigkoo.convenientbanner.ConvenientBanner;
import com.bigkoo.convenientbanner.holder.CBViewHolderCreator;
import com.kuqi.R;
import com.kuqi.adapter.BannerHolderAdapter;
import com.kuqi.adapter.VideoGridAdapter;
import com.kuqi.presenters.HomePagePresenter;

public class HomePageFragment extends Fragment {

    // 代理类，辅助页面执行查询之类的功能，简化本类的复杂程度
    private HomePagePresenter presenter;

    // 界面显示的基础控件
    private View rootView; // 与页面绑定的显示layout
    private ConvenientBanner bannerHome; // 轮播图显示区

    // 代理类或者http的回调信息解析
    private Handler msgHandler = new Handler(Looper.getMainLooper()) {
        @Override
        public void handleMessage(Message msg) {
            if(msg.what == HomePagePresenter.SEARCH_DATA_FINISH){
                Log.e("home page fragment","查询基础数据成功！");
                // 渲染轮播图数据
                initBannerData();
                // 初始化各个模块是数据
                initModuleData();
            }else{
                Log.e("home page fragment","不存在的回调命令，可能是查询数据出现了问题！");
            }
        }
    };


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 构建一个代理类
        presenter = new HomePagePresenter(getContext(),this.getLifecycle(), msgHandler);
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // fragment 不具备setContentView方法,所以只能使用此方法指定其绑定的显示内容
        // 请注意, 在fragment切换过程中,View在切换超过N个页面就会注销（这个可以在适配器修改）,
        // 再次显示onCreateView就会被调用
        // 但是 onCreate 在整个页面没有被注销前只会显示一次
        rootView = inflater.inflate(R.layout.fragment_homepage, container, false);
        //获取到轮播图对象(banner) 在后续插入到了fragment_homePage中
        bannerHome = rootView.findViewById(R.id.banner_home);

        // 调用查询初始化必须数据
        presenter.searchBaseData();

        return rootView;
    }


    /**
     * 初始化轮播图
     */
    private void initBannerData(){
        // 打折促销轮播图
        bannerHome.setPages(new CBViewHolderCreator<BannerHolderAdapter>() {
            @Override
            public BannerHolderAdapter createHolder() {
                return new BannerHolderAdapter();
            }
        }, presenter.getBannerPictureList());
        bannerHome.setPointViewVisible(true); //是否显示小圆点
        bannerHome.startTurning(2000); // 切换时间间隔
    }


    /**
     * 初始化轮播下各个模块列表的数据
     */
    private void initModuleData() {
        //fragment_homePage中的几个列表对象
        GridView cartonGridView = rootView.findViewById(R.id.CartonGridView);
        GridView scienceGridView = rootView.findViewById(R.id.ScienceGridView);
        GridView musicGridView = rootView.findViewById(R.id.MusicGridView);

        // 为一众GridView设置显示适配器,使其在点击后可以做出指定反映,跳转指定界面
        cartonGridView.setAdapter(new VideoGridAdapter(getActivity(), presenter.getCartonList()));
        musicGridView.setAdapter(new VideoGridAdapter(getActivity(), presenter.getMusicList()));
        scienceGridView.setAdapter(new VideoGridAdapter(getActivity(), presenter.getScienceList()));

        // 为一众"更多"列表设置点击事件
        View cartonView = rootView.findViewById(R.id.CartonView);
        cartonView.setOnClickListener(cartonViewListener);
        View musicView = rootView.findViewById(R.id.MusicView);
        musicView.setOnClickListener(musicViewListener);
        View scienceView = rootView.findViewById(R.id.ScienceView);
        scienceView.setOnClickListener(scienceViewListener);
    }


    // =======================================下面是一系列点击事件===================================


    // 点击番剧的更多选项
    private View.OnClickListener cartonViewListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
//            // 处理跳转逻辑
//            Intent i = new Intent(getActivity(), CartonMore.class);
//            startActivity(i);
            Toast.makeText(getActivity(),"暂时不设置更多内容，所以不给看！ *v* ",Toast.LENGTH_LONG).show();
        }
    };

    // 单击音乐更多
    private View.OnClickListener musicViewListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
//            // 处理跳转逻辑
//            Intent i = new Intent(getActivity(), MusicMore.class);
//            startActivity(i);
            Toast.makeText(getActivity(),"暂时不设置更多内容，所以不给看！ *v* ",Toast.LENGTH_LONG).show();
        }
    };

    // 单集科技更多
    private View.OnClickListener scienceViewListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
//            // 处理跳转逻辑
//            Intent i = new Intent(getActivity(), ScienceMore.class);
//            startActivity(i);\
            Toast.makeText(getActivity(),"暂时不设置更多内容，所以不给看！ *v* ",Toast.LENGTH_LONG).show();
        }
    };

}
